﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Infra.Common.DAO
{
    public class ItemCompraDAL
    {
        public static void Salvar(Infra.Entity.STKITEMCOMPRA itemCompra)
        {
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                if (itemCompra.CODitemCompr != 0)
                {
                    //Alterar item compra
                    var item = dc.STKITEMCOMPRAs.Single(itemc => itemc.CODitemCompr == itemCompra.CODitemCompr);
                    item.CODCompra = itemCompra.CODCompra;
                    item.CODProduto = itemCompra.CODProduto;
                    item.itemQuantidade = itemCompra.itemQuantidade;
                    item.itemPreco = itemCompra.itemPreco;
                    item.itemDesconto = itemCompra.itemDesconto;
                    dc.SubmitChanges();
                }
                else
                {
                    //Salvar compra
                    dc.STKITEMCOMPRAs.InsertOnSubmit(itemCompra);
                    dc.SubmitChanges();
                }
            }
        }

        public static void Excluir(int idItemCompra)
        {
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var itemcomp = dc.STKITEMCOMPRAs.Single(cmp => cmp.CODitemCompr == idItemCompra);
                dc.STKITEMCOMPRAs.DeleteOnSubmit(itemcomp);
                dc.SubmitChanges();
            }
        }

        public static List<Infra.Entity.STKITEMCOMPRA> Pesquisar(int codigo, long codCompra, long codProduto, int itemQuantidade, decimal itemPreco, decimal itemDesconto)
        {
            List<Infra.Entity.STKITEMCOMPRA> itemCompras = null;
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var item = from itemCompra in dc.STKITEMCOMPRAs
                           where (((codigo.Equals(0) || codigo.Equals(itemCompra.CODitemCompr)) &&
                                   (codCompra.Equals(0) || codCompra.Equals(itemCompra.CODCompra)) &&
                                   (codProduto.Equals(0) || codProduto.Equals(itemCompra.CODProduto))))

                           select itemCompra;
                itemCompras = item.ToList();
            }
            return itemCompras;
        }

        public static List<Infra.Entity.STKITEMCOMPRA> PesquisarSP(int codigo, long codCompra, long codProduto, int itemQuantidade, decimal itemPreco, decimal itemDesconto)
        {
            List<Infra.Entity.STKITEMCOMPRA> itemCompras = null;
            // Pesquisa usando Stored procedure
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                //var itemcomp = dc.SP_PESQUISA_ITEMCOMPRA(codigo, codCompra, codProduto, itemQuantidade, itemPreco, itemDesconto);
                //itemCompras = itemcomp.ToList();
            }
            return itemCompras;
        }
    }
}
